package sf.database.listener;

import javax.persistence.PostLoad;
import javax.persistence.PostPersist;
import javax.persistence.PostRemove;
import javax.persistence.PostUpdate;
import javax.persistence.PrePersist;
import javax.persistence.PreRemove;
import javax.persistence.PreUpdate;

public interface EntityListener {
    /**
     * 在实体保存到数据库之前执行的操作
     * @param o
     */
    @PrePersist
    default void prePersist(Object o) {
       
    }

    /**
     * 在实体保存到数据库之后执行的操作
     * @param o
     */
    @PostPersist
    default void postPersist(Object o) {

    }

    /**
     * 在实体从数据库加载后执行的操作
     * @param o
     */
    @PostLoad
    default void postLoad(Object o) {

    }

    /**
     * 在实体更新到数据库之前执行的操作
     * @param o
     */
    @PreUpdate
    default void preUpdate(Object o) {

    }

    /**
     * 在实体更新到数据库之后执行的操作
     * @param o
     */
    @PostUpdate
    default void postUpdate(Object o) {

    }

    /**
     * 在实体从数据库删除之前执行的操作
     * @param o
     */
    @PreRemove
    default void preRemove(Object o) {

    }

    /**
     * 在实体从数据库删除之后执行的操作
     * @param o
     */
    @PostRemove
    default void postRemove(Object o) {

    }
}
